<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>JavaScript</title>
</head>

<body>
  <p>正则表达式</p>
  <script>
    /* 
      1、使用字面量创建正则表达式
            语法：var 变量 = /正则表达式/匹配模式
          使用字面量的方式更加简单
      2、使用构造函数创建更加灵活
     */

     /* 
        语法：
          基础
            []里的内容是或的意思与|一样
              例：[a,b] == a|b
            [a-z]任意小写字母
            [A-Z]任意大小字母
            [A-z]任意字母
            [^ab]除了ab以外的
          量词
            {n} 正好出现n次
            {n,m} n-m次
            {m,} m次以上
            + 至少一个相当于{1,}
            * 0个或多个相当于{0,}
            ? 0-1个相当于{0,1}
            ^ 开头
            $ 结尾
            . 表示任意字符
          转义字符
            \ 转义符字符串中两个\\表示一个\ 例\.表示. \\表示\
              使用构造函数时由于参数是字符串所以在想用\时要用两个\\表示一个\
            \w 任意字母，数字，下划线
            \W 除了字母，数字，下划线
            \d 任意数字
            \D 除了数字
            \s 表示空格
            \S 除了空格
            \b 表示单词边界——有前后边界区分
            \B 除了单词边界

     */
    var reg = new RegExp('[A-z]', 'i')
    //  var reg = /[A-z]/i;

    console.log(reg.test('Ad'))


    // ==========字符串与正则表达式===========
    /* 
      split()
        - 拆分数组可以传递一个正则表达式参数将按照正则表达式去拆分
      search()
        - 可以搜索字符串中是否含有指定内容
          只匹配第一个符合项目即使指定全局
      match
        - 可以根据正则表达式将符合条件的提取出来
          会将匹配到的内容封装到一个数组中返回，即使只有一个
      replace()
        - 替换可以将字符串中指定的内容替换为新的内容
    */
    var str = '1a2b3c4d5e6FaC'
    console.log('search',str.search(/a[bdf]c/))

    var result = str.split(/[a-z]/)
    console.log('split',result)

    var mathR = str.match(/[a-z]/gi)
    console.log('match',mathR)

    var splitR = str.replace(/[a-z]/gi,'')
    console.log('replace',splitR)

    var strs = 'hello s child ren'
    var creg = /\bchild\b/
    console.log(creg.test(strs))
    var kstr = '    admin    '
    console.log('去首尾空格',kstr)
    // 去除开头和结尾空格
    console.log(kstr.replace(/^\s*|\s*$/g,''))
  </script>
</body>

</html>